package edu.utn.tacs.grupouno.negocio;

import java.util.Collection;
import java.util.LinkedList;

public class Estudio implements Cloneable {
	
	private String nombre="";
	protected Collection<Indicador> indicadores; 
	
	public Estudio() {
		indicadores = new LinkedList<Indicador>();
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public void addIndicador(Indicador indicador) {
		indicadores.add(indicador);
	}
	
	public void addIndicadores(Collection<Indicador> indicadores) {
		this.indicadores.addAll(indicadores);
	}
	
	protected boolean estanIndicadoresOk() {
		if (indicadores.size() == 0) {
			return false; //TODO: puede haber estudios sin indicadores? 
		}
		
		for (Indicador indicador : indicadores) {
			if (!indicador.estaOk()) {
				return false;
			}
		}
		
		return true;
	}

	public Collection<Indicador> getIndicadores() {
		return indicadores;
	}
	
	public Collection<Indicador> getIndicadoresCargados() {
		Collection<Indicador> indicadoresCargados = new LinkedList<Indicador>();
		
		for (Indicador indicador : indicadores) {
			if (indicador.tieneResultado()) {
				indicadoresCargados.add(indicador);
			}
		}
		
		return indicadoresCargados;
	}
	
	/**
	 * 
	 * @return true si todos los indicadores tienen cargado un resultado,
	 * false en caso contrario
	 */
	public boolean seCargaronTodosLosIndicadores() {
		for (Indicador indicador : indicadores) {
			if (!indicador.tieneResultado()) {
				return false;
			}
		}
		return true;
	}

	@Override
	protected Object clone() throws CloneNotSupportedException {
		Estudio estudio = (Estudio) super.clone();
		estudio.indicadores=new LinkedList<Indicador>();
		for (Indicador indicador : this.getIndicadores()) {
			estudio.addIndicador((Indicador) indicador.clone());
		}
		return estudio;
	}
	

}
